perm filename DATDPY[SS,SYS] blob
sn#427500 filedate 1979-03-22 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00004 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 These definitions are for @'s benefit
C00004 00003 DPYHDR BUFL ZZQ RDPYLN
C00016 00004 BELOW IS THE PROTOTYPICAL P. OF P. CONTROL BLOCK.
C00022 ENDMK
C⊗;
;These definitions are for @'s benefit
DEFINE .XCREF <;DON'T CREF THESE SYMBOLS>
DEFINE .AUXIL <>;DON'T CREF THE FILE'S UNUSED SYMBOLS
.AUXIL
; Don't cref AC's
.XCREF IOS,TAC,TAC1,P,J,DAT,DDB,PROG,TEM,DSER,UCHN,PID,UUO,AC1,AC2,AC3
; Alternative AC names. Flush someday
.XCREF LINE,ITEM,JBUF,CHR,BUFPNT,PDB,A,AC,AC0,B,BLK,BLOCK,C,D,SIZE
.XCREF I,L,PC,Q,QJ,QR,T2,W,WHO
; DDT's AC's
.XCREF F,T,W1,W2,SCH,AR,ODF,TT,SMB,R,S,W
; XCTR fields
.XCREF XCTR,P2XR,P2XW,P2XRW,P2XLB,P2STKR,P2STKW,P2XRSW,P2XE
.XCREF XR,XW,XRW,XE,XLB,XDB,XSTKR,XSTKW,XWSTKR,XBLTR,XBLTW,XBLTRW
; Random things that @ thinks are symbols
.XCREF ARE,FROM,IS,IT,OFF,ON
;The next two files are inserted so that ATSIGN won't list them.
.INSERT CACDAT[S,SYS]
.INSERT UNCDAT[S,SYS]
;THE REST OF THIS FILE CONTAINS THE DPY HDR DEFS AND THE PP CONTROL BLOCK DEFS
;DE-MACROIFIED SO THAT ATSIGN WILL SEE THEM
;DPYHDR BUFL ZZQ RDPYLN
COMMENT ⊗ NOW THE DPY PROGRAM HEADERS.
THERE IS ONE OF THESE FOR EACH DPY PROGRAM
IN EXISTENCE; IN GENERAL, ONE FOR EACH CONSOLE PLUS
ONE FOR EACH DETACHED JOB DOING DPY OUTPUT. THE HEADERS
AND THE START,RESTART, AND STOP TABLES ARE THE ONLY PARTS
OF THE WHOLE INCREDIBLE DPYSER DATA STRUCTURE WHICH DO NOT
GO IN FREE STORAGE.
DPYHDR: LABEL FOR NDFAIL
⊗
↑BUFL←←40 ; EDITING BUFFER IS THIS MANY WORDS LONG
ZZQ←←.
XWD .+3,DISRST+40
;PRGM. NORMALLY STARTED HERE.
; RESTORE PRIOR STATE OF DP.
PSELC: BYTE (12),7777,DISSEL ;FIRST DESELECT ALL CONSOLES
PSELA: BYTE (12)1⊗(=11-0),,DISSEL ;THEN RESTORE OLD SELECTION
PRGSTP: 0 ;PRGM IS STOPPED BY A JMS TO HERE.
PRGSAV: 0
WHOCALL: DISNOP ;CALL WHO LINE(IF ANY).
PPCALL: DISNOP ;HERE IS A JMP TO PAGE 0 OF PP.
LEDPOS: DISNOP ;HERE WE SET UP LINE EDITOR POSITION AT END OF CURRENT PP
LEPOS: DISNOP ;HERE WE SET UP LINE EDITOR POSITION FROM LEYPOS UUO
LEJMS: XWD ZZQ+LEB,DISJMS ;CALL THE LINE EDITOR.
PGCALL: DISNOP ;HERE A JMP TO PIECE OF GLASS CONT. BLK.
0 ;HERE PRGM NORMALLY HALTS.
PSELB: BYTE (12)1⊗(=11-0),¬(1⊗(=11-0)),DISSEL
;ANOTHER COPY OF SELECT WORD. PRGM RESTARTS HERE.
RTJMP: XWD WHOCALL+ZZQ,DISJMP
PRGNUM: 0 ;NO. OF DPY THIS PRGM ATTACHED TO.
BLKTOT: -7 ;NO. OF BLOCKS OF STORAGE HE CAN USE.
CURPP: 0 ;PTR. TO CTRL. BLK. OF SELECTED P OF P.
CURPG: 0
PRGACT: 400000 ;BITS TELL STATE OF ACTIVATION OF P OF P'S.
USRACT: 0 ;SAVED VERSION OF PRGACT.
LSTPG: 0 ;HIGHEST PG IN USE BY USER.
LECLIN: 0 ; FLAG THAT SAYS THIS BLOCK HAS A CLOCK REQUEST IN TO HAVE ITSELF KILLED, WHEN IT BECOMES FREE
DPRLSF: 0 ; FLAG THAT SAYS THIS PROGRAM HEADER BELONGS TO A DETACHED JOB AND IS TO BE RELEASED
PRGCW: 0 ; COMMAND WORD FOR USER GRAPHICS TRANSFERS
PRGJMP: 0 ; JUMP TO USER PROGRAM
PRGCNT: 0 ; DUMMY COUNT WORD
DPHOLD: 0 ; -1 IF HOLDING
GWORD: 0 ; GARBAGE WORD. HOLDS EVERYTHING WHAT WON'T FIT ELSEWHERE
; B0 1-PAGE PRINTER SIZE SET LAST BY CONSOLE COMMAND, 0-BY UUO
; B1 SAME FOR PAGE PRINTER Y-POSITION.
; B2 SAME FOR LINE HOLD COUNT
; B3 SAME FOR GLITCH HOLD COUNT
; B9-17 LINE HOLD COUNT
; B18-26 GLITCH HOLD COUNT
; B27-35 CHAR WHICH ACTIVATED LINED
LHCNT: 0 ; LINE HOLD COUNTDOWN
GLHCNT: 0 ; GLITCH HOLD COUNTDOWN
LEB:
0 ;DP DOES A JMS TO HERE TO DISPLAY EDITOR BUFFER.
0
LEPPV: 0 ;POINTER POSITION VECTOR FOR EDITOR POINTER.
III: LVW (-5,-14) ;(WILL BE 0 ON DD, DM) DRAW THE POINTER.
VDTMP: LVW (12,0) ;TEMP MAPPING STORED HERE ON DD
PPHPOS: LVW (-5,14) ;USED AS TEMP FOR DD CURSOR ROUTINES
XWD ZZQ+LEB+1,DISRST+40 ;RESTORE BEAM POSTION.
LELMAR: LVW(0,0,I) ;LEFT MARGIN VECTOR... USED FOR SHIFTING LONG LINES.
LEBUF: REPEAT BUFL,<XWD ZZQ+LEB,DISJMP> ;THE EDITOR BUFFER.
↑MAXPT←←LEBUF+BUFL-1-3 ;MAXIMUM RELATIVE VALUE OF LELWD (I.E., END OF BUFFER).
;THE SPARE THREE WORDS OF BUFFER AFTER MAXPT ALLOW FOR
;INSERTION OF (1) A TAB REPRESENTED AS TWO TABS WITH
;8 SPACES BETWEEN AND (2) A "LONG-LINE" CRLF WITH ITS
;SURROUNDING TABS, FOR A TOTAL OF 14 CHARS USED OUT OF
;THE 3*5=15 7-BIT BYTES AVAILABLE BEYOND MAXPT.
ledmz: 0 ;demilitarized zone, for catching bugs of overflow from LEBUF
LEHPOS: 0 ;HORIZONTAL POSITION OF POINTER (IN COLUMNS).
CCPOS: 0 ;LOGICAL POSITION OF POINTER, IN CHRS. FROM START OF LINE.
FCPOS: 0 ;NO. OF CHRS. IN LINE.
LELWD: 0 ;POINTER TO LAST WORD OF BUFFER IN USE (ONE BEFORE THE RETURN JMP).
LSTHP: 0 ; SAVED HORIZONTAL POSITION
LEENQ: 0 ; NUMBER OF LINE EDITOR TASKS IN THE QUEUE
LEENQ2: 0 ; NUMBER OF SCREEN REFRESH AND/OR HELP TASKS IN QUEUE.
LECHPS: 0 ; SAVED VALUE OF HORIZONTAL POSITION
NUMARG: 0 ;REPEAT ARGUMENT.
LEARG: 0 ; REPEAT ARGUEMENT SAVED FOR <ESC>G COMMAND AND ITS FRIENDS
LESVCH: 0 ;SAVED CHAR & FLAG FOR CTRL R (REPEATS LAST SEARCH OR KILL)
LEPNT1: 0 ;BYTE POINTER CORRESPNDING TO EDITOR POINTER.
SVPNT1: 0 ;SAVED COPY OF LEPNT1 FOR PARTIAL LINE EDITOR ACTIVATION
NTABPT: 0 ;BYTE PTR. TO NEXT TAB IN LINE TO RIGHT OF CURRENT POS.
NTABCT: 0 ;NUMBER OF SPACES IN NEXT TAB.
NTABHP: 0 ;HORIZONTAL POSITION OF NEXT TAB, FOR FIXING THAT TAB ON DMS
LEACT: 0 ; LINE EDITOR TELLS DPYKILL THAT A CHARACTER HAS BEEN TYPED HERE
LEINV: 0 ; MEANS LINE EDITOR BUFFER IS NOW INVALID
LEWAKE: 0 ; THIS IS SET BY A TRANSFER THAT IS ABORTED BECAUSE OF INVALID BUFFER
NCRS: 0 ; NUMBER OF LONG-LINE CRLFS IN LINE
LEVP: 0 ; VERTICAL POSITION OF LINE EDITOR LAST TIME IT WENT OUT
LEHP: 0 ; HORIZONTAL POSITION OF LINE EDITOR
LENCRS: 0 ; NUMBER OF LINES IT TOOK LAST TIME IT WENT OUT.
LECVP: 0 ; LAST CURSOR VERTICAL POSITION
LECHP: 0 ; LAST CURSOR HORIZONTAL POSITION
LECLK: 0 ; MEANS CLOCK REQUEST IS IN
LETXC: 0 ; MEANS LINE EDITOR TEXT HAS CHANGED
LEMISS: 0 ; INDICATES A TRANSFER MISSED DUE TO BUFFER INVALID
LECC: 0 ; SAYS WHETHER AN <ESC>C HAS BEEN TYPED
LELINE: 0 ; LINE NUMBER OF LINE EDITOR
CVP: 0 ; CURRENT CURSOR VERTICAL POSITION
CHP: 0 ; CURRENT CURSOR HORIZONTAL POSITION
WHOTAB: 0 ; WHO LINE TIME,,JOB #
WHORUN: 0 ; TIME WHEN RUN TIME SHOULD BE UPDATED ON WHO LINE
NPPXFR: 0 ; NUMBER OF PP TRANSFERS IN PROGRESS, USED BY PPWAIT
JPPWAT: 0 ; NUMBER OF JOB WAITING FOR NPPXFR TO GO TO ZERO
;Here are the cells created for DMs
DMQKCT: 0 ; Count of number of quicky char waiting for output on DM
DMQKPT: 0 ; Byte pointer used to pick up quicky chars
DMQKBF: BLOCK 4 ; Buffer for holding DM quicky chars
UCOUNT: 0 ; <Job>,,<Run flag addr> for clearing User DM prog run flag
DMLEPT: 0 ; Header of queue of Line Editor incremental xfers
DMSPPT: 0 ; Header of special queue (holding/unholding, tab-setting)
DMPPPT: 0 ; Header of queue of Page Printer xfers
DMUSER: 0 ; Header of queue of User display program xfers
DMWHO: 0 ; Header of queue of Wholine xfers
DMFLAG: 0 ; Flag word for actual state of DM display
DMXY: 0 ; Actual X-Y position of DM cursor
DMLEXY: 0 ; X-Y position for next LE char output
DMFS: 0 ; Pointer to free storage block for holding copy of LEBUF
DMCLK: 0 ; -1 if clock request in for DMLED0 waiting for FS
DMLEFL: 0 ; LH has DM state flags for line editor
DPTYCL: 0 ; -1 if clock request for DPYTYP is already in for DM
DMUSXY: 0 ; User-specified X-Y position for cursor when LE empty
IFN FTRANGE,<
DMBEG: 0 ; Beginning col for user output
DMEND: 0 ; Ending col for user output
>;FTRANGE
PADCNT: 1 ; LH: negative count of padding chars needed
; RH: low-order 9 bits: padding char to use
; RH: high-order 9 bits: baud rate to pad for
LEYVAL: 0 ; Line editor position set by LEYPOS UUO
DPYHGT: HGTIII ; Number of lines on display's screen (valid for all dpys)
DPYWID: LINELN ;Number of columns of text on display's screen
LETBPT: 0 ;PTR. TO THE LETAB ENTRY FOR THIS DPY.
; SIGN BIT ON IF VDSMAP TEMP IN EFFECT
LCH: 0 ;
DPYLEN:
↑RDPYLN←←<<DPYLEN+1>!7>+1 ;Real size of FS block for dpy hdrs
ORG ZZQ ; DON'T LOSE ANY STORAGE OVER THESE DEFINITIONS
;BELOW IS THE PROTOTYPICAL P. OF P. CONTROL BLOCK.
PPMODL:
PPOSV: {LVW -777,YPIII,I,A,2,2} ;POS VECTOR
↑TPJMP: DISJMP ;JMP TO FIRST BLOCK OF PAGE BEING DISPLAYED.
LVW (7,-17,I) ;NOW DRAW THE CURSOR.
LVW -5,-10
↑DDCW: <LVW 12,0>
LVW -5,10
LVW (-7,7,I)
↑PPRJMP: DISJMP ;JMP BACK TO HEADER OR ON TO NEXT CONT. BLK.
HEDPTR: 0 ;POINTER BACK TO PRGM HEADER.
OUTCNT: OUTNUM ;BLOCKS REMAINING BEFORE DISK OUTPUT.
↑PPNO: 0 ;NO. OF THIS P. OF P.
↑DPHPOS: -LINELN ;CHARS. LEFT BEFORE END OF THIS LINE.
CNT1: 0 ;CHARS. REMAINING BEFORE EXTENSION NEEDED.
PPTR1: {POINT 7,0,35} ;CURRENT POINTER FOR PRINTING ON THIS PIECE OF PAPER.
SPTR1: 0 ; SAVED POINTER FOR ZEROING OUT SPACE BEFORE CR
WCNT: -INITWC ;FREE WORDS LEFT IN CURRENT BLOCK.
CBLKPT: 0 ;BOTTOM OF CURRENT BLOCK.
↑TBLKPT: 0 ;FIRST BLOCK CURRENTLY DISPLAYED (AT TOP OF SCREEN)
FBLKPT: 0 ;FIRST BLOCK STILL IN CORE.
DEL: 2 ; NO. OF LINES IN A GLITCH.
DELCNT: 2 ;LINES REMAINING IN CURRENT GLITCH.
GLCNT: 1 ;CURRENT SIZE OF PAGE IN GLITCHES.
PGSIZ: 14 ;NOMINAL SIZE OF PAGE IN GLITCHES.
PTBEG: 0 ; INCREMENT INTO LINE POINTER TABLE
DDSPT: 0 ;POINTS TO SAVED WORD FROM FIRST REFRESHED LINE (DD)
DDSAV: 0 ;SAVED WORD FROM FIRST REFRESHED LINE (DD)
0
↑VPOS: 0 ;LINE NUMBER OF CURRENT LINE (ON III, RELATIVE TO PP TOP)
LLW: 0 ;LAST LINE WRITTEN (AS VPOS, GLW, RELATIVE TO PP TOP ON III)
PTRB: <XWD AC3,0> ;POINTS TO TABLE OF BYTE POINTERS TO THE FIRST OF EACH LINE (DD)
PTB: 0 ; ACTUAL TABLE ADDRESS
VP: 0 ; VERTICAL POSITION ARGUMENT TO QDD
SC: 0 ; ARGUMENT TO QDD FOR COUNT FIELD ADDRESS
DPYCHR: 0 ; FLAG SAYING AT LEAST ONE CHARACTER HAS BEEN TYPED
LSTCHR: 12 ; LAST CHARACTER DEPOSITED INTO BUFFER
FAKELF: 0 ; -1 IF DTYO HAS JUST INVENTED A LF FOR DPYTYP
GLW: 0 ; GREATEST LINE WRITTEN, FOR ERASING WHEN WE GLITCH
↑PPDPY: 0 ; LH IS BIT TELLING DISPLAY TYPE, RH IS POSLIN SUBROUTINE
GLTCH: 0 ; FLAG THAT SAYS THE PAGE PRINTER HAS GLITCHED
PPINV: 0 ; FLAG INDICATING PAGE PRINTER POINTERS ARE BEING MODIFIED
PPENQ: 0 ; NUMBER OF TASKS THIS PAGE PRINTER HAS IN THE DD QUEUE
PPNQT: 0 ; COUNT DOWN FOR NON-PAGE PRINTER REQUESTS
PPVIRG: -1 ; INDICATES VIRGIN PAGE PRINTER
DMLAST: 0 ;Byte pointer to last character queued from this PP
DMPPXY: 0 ;X-Y position for next char output on this PP
DMGLCH: 0 ;Minus number of lines of glitching needed for this PP on DM
PPYVAL: YPIII ;Y position for PP, in DPYPOS format
↑LNLNGT: LINELN ;LINELENGTH FOR THIS GUY.
;Don't put any cells after LNLNGT because BLKSIZ is defined below from LNLNGT.
; ALL DISPLAY PROGRAM SPACE IS TAKEN FROM A FREE
; STORAGE AREA CONSISTING OF FIXED SIZE BLOCKS. THE
; FOLLOWING PARAMETERS RELATE TO THOSE BLOCKS.